↳ Prolog
↳ PrologToPiTRSProof
add_in(X, Y, Z) → U3(X, Y, Z, addz_in(X, Y, Z))
addz_in(one(X), one(Y), zero(Z)) → U13(X, Y, Z, addc_in(X, Y, Z))
addc_in(X, Y, Z) → U16(X, Y, Z, addC_in(X, Y, Z))
addC_in(one(X), one(Y), one(Z)) → U26(X, Y, Z, addc_in(X, Y, Z))
addc_in(b, Y, Z) → U15(Y, Z, succZ_in(Y, Z))
succZ_in(one(X), zero(Z)) → U34(X, Z, succ_in(X, Z))
succ_in(one(X), zero(Z)) → U32(X, Z, succ_in(X, Z))
succ_in(zero(X), one(X)) → U31(X, binaryZ_in(X))
binaryZ_in(one(X)) → U30(X, binary_in(X))
binary_in(one(X)) → U28(X, binary_in(X))
binary_in(zero(X)) → U27(X, binaryZ_in(X))
binaryZ_in(zero(X)) → U29(X, binaryZ_in(X))
U29(X, binaryZ_out(X)) → binaryZ_out(zero(X))
U27(X, binaryZ_out(X)) → binary_out(zero(X))
binary_in(b) → binary_out(b)
U28(X, binary_out(X)) → binary_out(one(X))
U30(X, binary_out(X)) → binaryZ_out(one(X))
U31(X, binaryZ_out(X)) → succ_out(zero(X), one(X))
succ_in(b, one(b)) → succ_out(b, one(b))
U32(X, Z, succ_out(X, Z)) → succ_out(one(X), zero(Z))
U34(X, Z, succ_out(X, Z)) → succZ_out(one(X), zero(Z))
succZ_in(zero(X), one(X)) → U33(X, binaryZ_in(X))
U33(X, binaryZ_out(X)) → succZ_out(zero(X), one(X))
U15(Y, Z, succZ_out(Y, Z)) → addc_out(b, Y, Z)
addc_in(X, b, Z) → U14(X, Z, succZ_in(X, Z))
U14(X, Z, succZ_out(X, Z)) → addc_out(X, b, Z)
addc_in(b, b, one(b)) → addc_out(b, b, one(b))
U26(X, Y, Z, addc_out(X, Y, Z)) → addC_out(one(X), one(Y), one(Z))
addC_in(one(X), zero(Y), zero(Z)) → U25(X, Y, Z, addY_in(X, Y, Z))
addY_in(X, Y, Z) → U22(X, Y, Z, addC_in(X, Y, Z))
addC_in(zero(X), one(Y), zero(Z)) → U24(X, Y, Z, addX_in(X, Y, Z))
addX_in(X, Y, Z) → U19(X, Y, Z, addC_in(X, Y, Z))
addC_in(zero(X), zero(Y), one(Z)) → U23(X, Y, Z, addz_in(X, Y, Z))
addz_in(one(X), zero(Y), one(Z)) → U12(X, Y, Z, addy_in(X, Y, Z))
addy_in(X, Y, Z) → U9(X, Y, Z, addz_in(X, Y, Z))
addz_in(zero(X), one(Y), one(Z)) → U11(X, Y, Z, addx_in(X, Y, Z))
addx_in(X, Y, Z) → U6(X, Y, Z, addz_in(X, Y, Z))
addz_in(zero(X), zero(Y), zero(Z)) → U10(X, Y, Z, addz_in(X, Y, Z))
U10(X, Y, Z, addz_out(X, Y, Z)) → addz_out(zero(X), zero(Y), zero(Z))
U6(X, Y, Z, addz_out(X, Y, Z)) → addx_out(X, Y, Z)
addx_in(zero(X), b, zero(X)) → U5(X, binaryZ_in(X))
U5(X, binaryZ_out(X)) → addx_out(zero(X), b, zero(X))
addx_in(one(X), b, one(X)) → U4(X, binary_in(X))
U4(X, binary_out(X)) → addx_out(one(X), b, one(X))
U11(X, Y, Z, addx_out(X, Y, Z)) → addz_out(zero(X), one(Y), one(Z))
U9(X, Y, Z, addz_out(X, Y, Z)) → addy_out(X, Y, Z)
addy_in(b, zero(Y), zero(Y)) → U8(Y, binaryZ_in(Y))
U8(Y, binaryZ_out(Y)) → addy_out(b, zero(Y), zero(Y))
addy_in(b, one(Y), one(Y)) → U7(Y, binary_in(Y))
U7(Y, binary_out(Y)) → addy_out(b, one(Y), one(Y))
U12(X, Y, Z, addy_out(X, Y, Z)) → addz_out(one(X), zero(Y), one(Z))
U23(X, Y, Z, addz_out(X, Y, Z)) → addC_out(zero(X), zero(Y), one(Z))
U19(X, Y, Z, addC_out(X, Y, Z)) → addX_out(X, Y, Z)
addX_in(one(X), b, zero(Z)) → U18(X, Z, succ_in(X, Z))
U18(X, Z, succ_out(X, Z)) → addX_out(one(X), b, zero(Z))
addX_in(zero(X), b, one(X)) → U17(X, binaryZ_in(X))
U17(X, binaryZ_out(X)) → addX_out(zero(X), b, one(X))
U24(X, Y, Z, addX_out(X, Y, Z)) → addC_out(zero(X), one(Y), zero(Z))
U22(X, Y, Z, addC_out(X, Y, Z)) → addY_out(X, Y, Z)
addY_in(b, one(Y), zero(Z)) → U21(Y, Z, succ_in(Y, Z))
U21(Y, Z, succ_out(Y, Z)) → addY_out(b, one(Y), zero(Z))
addY_in(b, zero(Y), one(Y)) → U20(Y, binaryZ_in(Y))
U20(Y, binaryZ_out(Y)) → addY_out(b, zero(Y), one(Y))
U25(X, Y, Z, addY_out(X, Y, Z)) → addC_out(one(X), zero(Y), zero(Z))
U16(X, Y, Z, addC_out(X, Y, Z)) → addc_out(X, Y, Z)
U13(X, Y, Z, addc_out(X, Y, Z)) → addz_out(one(X), one(Y), zero(Z))
U3(X, Y, Z, addz_out(X, Y, Z)) → add_out(X, Y, Z)
add_in(b, Y, Y) → U2(Y, binaryZ_in(Y))
U2(Y, binaryZ_out(Y)) → add_out(b, Y, Y)
add_in(X, b, X) → U1(X, binaryZ_in(X))
U1(X, binaryZ_out(X)) → add_out(X, b, X)
add_in(b, b, b) → add_out(b, b, b)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
add_in(X, Y, Z) → U3(X, Y, Z, addz_in(X, Y, Z))
addz_in(one(X), one(Y), zero(Z)) → U13(X, Y, Z, addc_in(X, Y, Z))
addc_in(X, Y, Z) → U16(X, Y, Z, addC_in(X, Y, Z))
addC_in(one(X), one(Y), one(Z)) → U26(X, Y, Z, addc_in(X, Y, Z))
addc_in(b, Y, Z) → U15(Y, Z, succZ_in(Y, Z))
succZ_in(one(X), zero(Z)) → U34(X, Z, succ_in(X, Z))
succ_in(one(X), zero(Z)) → U32(X, Z, succ_in(X, Z))
succ_in(zero(X), one(X)) → U31(X, binaryZ_in(X))
binaryZ_in(one(X)) → U30(X, binary_in(X))
binary_in(one(X)) → U28(X, binary_in(X))
binary_in(zero(X)) → U27(X, binaryZ_in(X))
binaryZ_in(zero(X)) → U29(X, binaryZ_in(X))
U29(X, binaryZ_out(X)) → binaryZ_out(zero(X))
U27(X, binaryZ_out(X)) → binary_out(zero(X))
binary_in(b) → binary_out(b)
U28(X, binary_out(X)) → binary_out(one(X))
U30(X, binary_out(X)) → binaryZ_out(one(X))
U31(X, binaryZ_out(X)) → succ_out(zero(X), one(X))
succ_in(b, one(b)) → succ_out(b, one(b))
U32(X, Z, succ_out(X, Z)) → succ_out(one(X), zero(Z))
U34(X, Z, succ_out(X, Z)) → succZ_out(one(X), zero(Z))
succZ_in(zero(X), one(X)) → U33(X, binaryZ_in(X))
U33(X, binaryZ_out(X)) → succZ_out(zero(X), one(X))
U15(Y, Z, succZ_out(Y, Z)) → addc_out(b, Y, Z)
addc_in(X, b, Z) → U14(X, Z, succZ_in(X, Z))
U14(X, Z, succZ_out(X, Z)) → addc_out(X, b, Z)
addc_in(b, b, one(b)) → addc_out(b, b, one(b))
U26(X, Y, Z, addc_out(X, Y, Z)) → addC_out(one(X), one(Y), one(Z))
addC_in(one(X), zero(Y), zero(Z)) → U25(X, Y, Z, addY_in(X, Y, Z))
addY_in(X, Y, Z) → U22(X, Y, Z, addC_in(X, Y, Z))
addC_in(zero(X), one(Y), zero(Z)) → U24(X, Y, Z, addX_in(X, Y, Z))
addX_in(X, Y, Z) → U19(X, Y, Z, addC_in(X, Y, Z))
addC_in(zero(X), zero(Y), one(Z)) → U23(X, Y, Z, addz_in(X, Y, Z))
addz_in(one(X), zero(Y), one(Z)) → U12(X, Y, Z, addy_in(X, Y, Z))
addy_in(X, Y, Z) → U9(X, Y, Z, addz_in(X, Y, Z))
addz_in(zero(X), one(Y), one(Z)) → U11(X, Y, Z, addx_in(X, Y, Z))
addx_in(X, Y, Z) → U6(X, Y, Z, addz_in(X, Y, Z))
addz_in(zero(X), zero(Y), zero(Z)) → U10(X, Y, Z, addz_in(X, Y, Z))
U10(X, Y, Z, addz_out(X, Y, Z)) → addz_out(zero(X), zero(Y), zero(Z))
U6(X, Y, Z, addz_out(X, Y, Z)) → addx_out(X, Y, Z)
addx_in(zero(X), b, zero(X)) → U5(X, binaryZ_in(X))
U5(X, binaryZ_out(X)) → addx_out(zero(X), b, zero(X))
addx_in(one(X), b, one(X)) → U4(X, binary_in(X))
U4(X, binary_out(X)) → addx_out(one(X), b, one(X))
U11(X, Y, Z, addx_out(X, Y, Z)) → addz_out(zero(X), one(Y), one(Z))
U9(X, Y, Z, addz_out(X, Y, Z)) → addy_out(X, Y, Z)
addy_in(b, zero(Y), zero(Y)) → U8(Y, binaryZ_in(Y))
U8(Y, binaryZ_out(Y)) → addy_out(b, zero(Y), zero(Y))
addy_in(b, one(Y), one(Y)) → U7(Y, binary_in(Y))
U7(Y, binary_out(Y)) → addy_out(b, one(Y), one(Y))
U12(X, Y, Z, addy_out(X, Y, Z)) → addz_out(one(X), zero(Y), one(Z))
U23(X, Y, Z, addz_out(X, Y, Z)) → addC_out(zero(X), zero(Y), one(Z))
U19(X, Y, Z, addC_out(X, Y, Z)) → addX_out(X, Y, Z)
addX_in(one(X), b, zero(Z)) → U18(X, Z, succ_in(X, Z))
U18(X, Z, succ_out(X, Z)) → addX_out(one(X), b, zero(Z))
addX_in(zero(X), b, one(X)) → U17(X, binaryZ_in(X))
U17(X, binaryZ_out(X)) → addX_out(zero(X), b, one(X))
U24(X, Y, Z, addX_out(X, Y, Z)) → addC_out(zero(X), one(Y), zero(Z))
U22(X, Y, Z, addC_out(X, Y, Z)) → addY_out(X, Y, Z)
addY_in(b, one(Y), zero(Z)) → U21(Y, Z, succ_in(Y, Z))
U21(Y, Z, succ_out(Y, Z)) → addY_out(b, one(Y), zero(Z))
addY_in(b, zero(Y), one(Y)) → U20(Y, binaryZ_in(Y))
U20(Y, binaryZ_out(Y)) → addY_out(b, zero(Y), one(Y))
U25(X, Y, Z, addY_out(X, Y, Z)) → addC_out(one(X), zero(Y), zero(Z))
U16(X, Y, Z, addC_out(X, Y, Z)) → addc_out(X, Y, Z)
U13(X, Y, Z, addc_out(X, Y, Z)) → addz_out(one(X), one(Y), zero(Z))
U3(X, Y, Z, addz_out(X, Y, Z)) → add_out(X, Y, Z)
add_in(b, Y, Y) → U2(Y, binaryZ_in(Y))
U2(Y, binaryZ_out(Y)) → add_out(b, Y, Y)
add_in(X, b, X) → U1(X, binaryZ_in(X))
U1(X, binaryZ_out(X)) → add_out(X, b, X)
add_in(b, b, b) → add_out(b, b, b)
ADD_IN(X, Y, Z) → U31(X, Y, Z, addz_in(X, Y, Z))
ADD_IN(X, Y, Z) → ADDZ_IN(X, Y, Z)
ADDZ_IN(one(X), one(Y), zero(Z)) → U131(X, Y, Z, addc_in(X, Y, Z))
ADDZ_IN(one(X), one(Y), zero(Z)) → ADDC_IN(X, Y, Z)
ADDC_IN(X, Y, Z) → U161(X, Y, Z, addC_in(X, Y, Z))
ADDC_IN(X, Y, Z) → ADDC_IN1(X, Y, Z)
ADDC_IN1(one(X), one(Y), one(Z)) → U261(X, Y, Z, addc_in(X, Y, Z))
ADDC_IN1(one(X), one(Y), one(Z)) → ADDC_IN(X, Y, Z)
ADDC_IN(b, Y, Z) → U151(Y, Z, succZ_in(Y, Z))
ADDC_IN(b, Y, Z) → SUCCZ_IN(Y, Z)
SUCCZ_IN(one(X), zero(Z)) → U341(X, Z, succ_in(X, Z))
SUCCZ_IN(one(X), zero(Z)) → SUCC_IN(X, Z)
SUCC_IN(one(X), zero(Z)) → U321(X, Z, succ_in(X, Z))
SUCC_IN(one(X), zero(Z)) → SUCC_IN(X, Z)
SUCC_IN(zero(X), one(X)) → U311(X, binaryZ_in(X))
SUCC_IN(zero(X), one(X)) → BINARYZ_IN(X)
BINARYZ_IN(one(X)) → U301(X, binary_in(X))
BINARYZ_IN(one(X)) → BINARY_IN(X)
BINARY_IN(one(X)) → U281(X, binary_in(X))
BINARY_IN(one(X)) → BINARY_IN(X)
BINARY_IN(zero(X)) → U271(X, binaryZ_in(X))
BINARY_IN(zero(X)) → BINARYZ_IN(X)
BINARYZ_IN(zero(X)) → U291(X, binaryZ_in(X))
BINARYZ_IN(zero(X)) → BINARYZ_IN(X)
SUCCZ_IN(zero(X), one(X)) → U331(X, binaryZ_in(X))
SUCCZ_IN(zero(X), one(X)) → BINARYZ_IN(X)
ADDC_IN(X, b, Z) → U141(X, Z, succZ_in(X, Z))
ADDC_IN(X, b, Z) → SUCCZ_IN(X, Z)
ADDC_IN1(one(X), zero(Y), zero(Z)) → U251(X, Y, Z, addY_in(X, Y, Z))
ADDC_IN1(one(X), zero(Y), zero(Z)) → ADDY_IN(X, Y, Z)
ADDY_IN(X, Y, Z) → U221(X, Y, Z, addC_in(X, Y, Z))
ADDY_IN(X, Y, Z) → ADDC_IN1(X, Y, Z)
ADDC_IN1(zero(X), one(Y), zero(Z)) → U241(X, Y, Z, addX_in(X, Y, Z))
ADDC_IN1(zero(X), one(Y), zero(Z)) → ADDX_IN(X, Y, Z)
ADDX_IN(X, Y, Z) → U191(X, Y, Z, addC_in(X, Y, Z))
ADDX_IN(X, Y, Z) → ADDC_IN1(X, Y, Z)
ADDC_IN1(zero(X), zero(Y), one(Z)) → U231(X, Y, Z, addz_in(X, Y, Z))
ADDC_IN1(zero(X), zero(Y), one(Z)) → ADDZ_IN(X, Y, Z)
ADDZ_IN(one(X), zero(Y), one(Z)) → U121(X, Y, Z, addy_in(X, Y, Z))
ADDZ_IN(one(X), zero(Y), one(Z)) → ADDY_IN1(X, Y, Z)
ADDY_IN1(X, Y, Z) → U91(X, Y, Z, addz_in(X, Y, Z))
ADDY_IN1(X, Y, Z) → ADDZ_IN(X, Y, Z)
ADDZ_IN(zero(X), one(Y), one(Z)) → U111(X, Y, Z, addx_in(X, Y, Z))
ADDZ_IN(zero(X), one(Y), one(Z)) → ADDX_IN1(X, Y, Z)
ADDX_IN1(X, Y, Z) → U61(X, Y, Z, addz_in(X, Y, Z))
ADDX_IN1(X, Y, Z) → ADDZ_IN(X, Y, Z)
ADDZ_IN(zero(X), zero(Y), zero(Z)) → U101(X, Y, Z, addz_in(X, Y, Z))
ADDZ_IN(zero(X), zero(Y), zero(Z)) → ADDZ_IN(X, Y, Z)
ADDX_IN1(zero(X), b, zero(X)) → U51(X, binaryZ_in(X))
ADDX_IN1(zero(X), b, zero(X)) → BINARYZ_IN(X)
ADDX_IN1(one(X), b, one(X)) → U41(X, binary_in(X))
ADDX_IN1(one(X), b, one(X)) → BINARY_IN(X)
ADDY_IN1(b, zero(Y), zero(Y)) → U81(Y, binaryZ_in(Y))
ADDY_IN1(b, zero(Y), zero(Y)) → BINARYZ_IN(Y)
ADDY_IN1(b, one(Y), one(Y)) → U71(Y, binary_in(Y))
ADDY_IN1(b, one(Y), one(Y)) → BINARY_IN(Y)
ADDX_IN(one(X), b, zero(Z)) → U181(X, Z, succ_in(X, Z))
ADDX_IN(one(X), b, zero(Z)) → SUCC_IN(X, Z)
ADDX_IN(zero(X), b, one(X)) → U171(X, binaryZ_in(X))
ADDX_IN(zero(X), b, one(X)) → BINARYZ_IN(X)
ADDY_IN(b, one(Y), zero(Z)) → U211(Y, Z, succ_in(Y, Z))
ADDY_IN(b, one(Y), zero(Z)) → SUCC_IN(Y, Z)
ADDY_IN(b, zero(Y), one(Y)) → U201(Y, binaryZ_in(Y))
ADDY_IN(b, zero(Y), one(Y)) → BINARYZ_IN(Y)
ADD_IN(b, Y, Y) → U21(Y, binaryZ_in(Y))
ADD_IN(b, Y, Y) → BINARYZ_IN(Y)
ADD_IN(X, b, X) → U11(X, binaryZ_in(X))
ADD_IN(X, b, X) → BINARYZ_IN(X)
add_in(X, Y, Z) → U3(X, Y, Z, addz_in(X, Y, Z))
addz_in(one(X), one(Y), zero(Z)) → U13(X, Y, Z, addc_in(X, Y, Z))
addc_in(X, Y, Z) → U16(X, Y, Z, addC_in(X, Y, Z))
addC_in(one(X), one(Y), one(Z)) → U26(X, Y, Z, addc_in(X, Y, Z))
addc_in(b, Y, Z) → U15(Y, Z, succZ_in(Y, Z))
succZ_in(one(X), zero(Z)) → U34(X, Z, succ_in(X, Z))
succ_in(one(X), zero(Z)) → U32(X, Z, succ_in(X, Z))
succ_in(zero(X), one(X)) → U31(X, binaryZ_in(X))
binaryZ_in(one(X)) → U30(X, binary_in(X))
binary_in(one(X)) → U28(X, binary_in(X))
binary_in(zero(X)) → U27(X, binaryZ_in(X))
binaryZ_in(zero(X)) → U29(X, binaryZ_in(X))
U29(X, binaryZ_out(X)) → binaryZ_out(zero(X))
U27(X, binaryZ_out(X)) → binary_out(zero(X))
binary_in(b) → binary_out(b)
U28(X, binary_out(X)) → binary_out(one(X))
U30(X, binary_out(X)) → binaryZ_out(one(X))
U31(X, binaryZ_out(X)) → succ_out(zero(X), one(X))
succ_in(b, one(b)) → succ_out(b, one(b))
U32(X, Z, succ_out(X, Z)) → succ_out(one(X), zero(Z))
U34(X, Z, succ_out(X, Z)) → succZ_out(one(X), zero(Z))
succZ_in(zero(X), one(X)) → U33(X, binaryZ_in(X))
U33(X, binaryZ_out(X)) → succZ_out(zero(X), one(X))
U15(Y, Z, succZ_out(Y, Z)) → addc_out(b, Y, Z)
addc_in(X, b, Z) → U14(X, Z, succZ_in(X, Z))
U14(X, Z, succZ_out(X, Z)) → addc_out(X, b, Z)
addc_in(b, b, one(b)) → addc_out(b, b, one(b))
U26(X, Y, Z, addc_out(X, Y, Z)) → addC_out(one(X), one(Y), one(Z))
addC_in(one(X), zero(Y), zero(Z)) → U25(X, Y, Z, addY_in(X, Y, Z))
addY_in(X, Y, Z) → U22(X, Y, Z, addC_in(X, Y, Z))
addC_in(zero(X), one(Y), zero(Z)) → U24(X, Y, Z, addX_in(X, Y, Z))
addX_in(X, Y, Z) → U19(X, Y, Z, addC_in(X, Y, Z))
addC_in(zero(X), zero(Y), one(Z)) → U23(X, Y, Z, addz_in(X, Y, Z))
addz_in(one(X), zero(Y), one(Z)) → U12(X, Y, Z, addy_in(X, Y, Z))
addy_in(X, Y, Z) → U9(X, Y, Z, addz_in(X, Y, Z))
addz_in(zero(X), one(Y), one(Z)) → U11(X, Y, Z, addx_in(X, Y, Z))
addx_in(X, Y, Z) → U6(X, Y, Z, addz_in(X, Y, Z))
addz_in(zero(X), zero(Y), zero(Z)) → U10(X, Y, Z, addz_in(X, Y, Z))
U10(X, Y, Z, addz_out(X, Y, Z)) → addz_out(zero(X), zero(Y), zero(Z))
U6(X, Y, Z, addz_out(X, Y, Z)) → addx_out(X, Y, Z)
addx_in(zero(X), b, zero(X)) → U5(X, binaryZ_in(X))
U5(X, binaryZ_out(X)) → addx_out(zero(X), b, zero(X))
addx_in(one(X), b, one(X)) → U4(X, binary_in(X))
U4(X, binary_out(X)) → addx_out(one(X), b, one(X))
U11(X, Y, Z, addx_out(X, Y, Z)) → addz_out(zero(X), one(Y), one(Z))
U9(X, Y, Z, addz_out(X, Y, Z)) → addy_out(X, Y, Z)
addy_in(b, zero(Y), zero(Y)) → U8(Y, binaryZ_in(Y))
U8(Y, binaryZ_out(Y)) → addy_out(b, zero(Y), zero(Y))
addy_in(b, one(Y), one(Y)) → U7(Y, binary_in(Y))
U7(Y, binary_out(Y)) → addy_out(b, one(Y), one(Y))
U12(X, Y, Z, addy_out(X, Y, Z)) → addz_out(one(X), zero(Y), one(Z))
U23(X, Y, Z, addz_out(X, Y, Z)) → addC_out(zero(X), zero(Y), one(Z))
U19(X, Y, Z, addC_out(X, Y, Z)) → addX_out(X, Y, Z)
addX_in(one(X), b, zero(Z)) → U18(X, Z, succ_in(X, Z))
U18(X, Z, succ_out(X, Z)) → addX_out(one(X), b, zero(Z))
addX_in(zero(X), b, one(X)) → U17(X, binaryZ_in(X))
U17(X, binaryZ_out(X)) → addX_out(zero(X), b, one(X))
U24(X, Y, Z, addX_out(X, Y, Z)) → addC_out(zero(X), one(Y), zero(Z))
U22(X, Y, Z, addC_out(X, Y, Z)) → addY_out(X, Y, Z)
addY_in(b, one(Y), zero(Z)) → U21(Y, Z, succ_in(Y, Z))
U21(Y, Z, succ_out(Y, Z)) → addY_out(b, one(Y), zero(Z))
addY_in(b, zero(Y), one(Y)) → U20(Y, binaryZ_in(Y))
U20(Y, binaryZ_out(Y)) → addY_out(b, zero(Y), one(Y))
U25(X, Y, Z, addY_out(X, Y, Z)) → addC_out(one(X), zero(Y), zero(Z))
U16(X, Y, Z, addC_out(X, Y, Z)) → addc_out(X, Y, Z)
U13(X, Y, Z, addc_out(X, Y, Z)) → addz_out(one(X), one(Y), zero(Z))
U3(X, Y, Z, addz_out(X, Y, Z)) → add_out(X, Y, Z)
add_in(b, Y, Y) → U2(Y, binaryZ_in(Y))
U2(Y, binaryZ_out(Y)) → add_out(b, Y, Y)
add_in(X, b, X) → U1(X, binaryZ_in(X))
U1(X, binaryZ_out(X)) → add_out(X, b, X)
add_in(b, b, b) → add_out(b, b, b)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
ADD_IN(X, Y, Z) → U31(X, Y, Z, addz_in(X, Y, Z))
ADD_IN(X, Y, Z) → ADDZ_IN(X, Y, Z)
ADDZ_IN(one(X), one(Y), zero(Z)) → U131(X, Y, Z, addc_in(X, Y, Z))
ADDZ_IN(one(X), one(Y), zero(Z)) → ADDC_IN(X, Y, Z)
ADDC_IN(X, Y, Z) → U161(X, Y, Z, addC_in(X, Y, Z))
ADDC_IN(X, Y, Z) → ADDC_IN1(X, Y, Z)
ADDC_IN1(one(X), one(Y), one(Z)) → U261(X, Y, Z, addc_in(X, Y, Z))
ADDC_IN1(one(X), one(Y), one(Z)) → ADDC_IN(X, Y, Z)
ADDC_IN(b, Y, Z) → U151(Y, Z, succZ_in(Y, Z))
ADDC_IN(b, Y, Z) → SUCCZ_IN(Y, Z)
SUCCZ_IN(one(X), zero(Z)) → U341(X, Z, succ_in(X, Z))
SUCCZ_IN(one(X), zero(Z)) → SUCC_IN(X, Z)
SUCC_IN(one(X), zero(Z)) → U321(X, Z, succ_in(X, Z))
SUCC_IN(one(X), zero(Z)) → SUCC_IN(X, Z)
SUCC_IN(zero(X), one(X)) → U311(X, binaryZ_in(X))
SUCC_IN(zero(X), one(X)) → BINARYZ_IN(X)
BINARYZ_IN(one(X)) → U301(X, binary_in(X))
BINARYZ_IN(one(X)) → BINARY_IN(X)
BINARY_IN(one(X)) → U281(X, binary_in(X))
BINARY_IN(one(X)) → BINARY_IN(X)
BINARY_IN(zero(X)) → U271(X, binaryZ_in(X))
BINARY_IN(zero(X)) → BINARYZ_IN(X)
BINARYZ_IN(zero(X)) → U291(X, binaryZ_in(X))
BINARYZ_IN(zero(X)) → BINARYZ_IN(X)
SUCCZ_IN(zero(X), one(X)) → U331(X, binaryZ_in(X))
SUCCZ_IN(zero(X), one(X)) → BINARYZ_IN(X)
ADDC_IN(X, b, Z) → U141(X, Z, succZ_in(X, Z))
ADDC_IN(X, b, Z) → SUCCZ_IN(X, Z)
ADDC_IN1(one(X), zero(Y), zero(Z)) → U251(X, Y, Z, addY_in(X, Y, Z))
ADDC_IN1(one(X), zero(Y), zero(Z)) → ADDY_IN(X, Y, Z)
ADDY_IN(X, Y, Z) → U221(X, Y, Z, addC_in(X, Y, Z))
ADDY_IN(X, Y, Z) → ADDC_IN1(X, Y, Z)
ADDC_IN1(zero(X), one(Y), zero(Z)) → U241(X, Y, Z, addX_in(X, Y, Z))
ADDC_IN1(zero(X), one(Y), zero(Z)) → ADDX_IN(X, Y, Z)
ADDX_IN(X, Y, Z) → U191(X, Y, Z, addC_in(X, Y, Z))
ADDX_IN(X, Y, Z) → ADDC_IN1(X, Y, Z)
ADDC_IN1(zero(X), zero(Y), one(Z)) → U231(X, Y, Z, addz_in(X, Y, Z))
ADDC_IN1(zero(X), zero(Y), one(Z)) → ADDZ_IN(X, Y, Z)
ADDZ_IN(one(X), zero(Y), one(Z)) → U121(X, Y, Z, addy_in(X, Y, Z))
ADDZ_IN(one(X), zero(Y), one(Z)) → ADDY_IN1(X, Y, Z)
ADDY_IN1(X, Y, Z) → U91(X, Y, Z, addz_in(X, Y, Z))
ADDY_IN1(X, Y, Z) → ADDZ_IN(X, Y, Z)
ADDZ_IN(zero(X), one(Y), one(Z)) → U111(X, Y, Z, addx_in(X, Y, Z))
ADDZ_IN(zero(X), one(Y), one(Z)) → ADDX_IN1(X, Y, Z)
ADDX_IN1(X, Y, Z) → U61(X, Y, Z, addz_in(X, Y, Z))
ADDX_IN1(X, Y, Z) → ADDZ_IN(X, Y, Z)
ADDZ_IN(zero(X), zero(Y), zero(Z)) → U101(X, Y, Z, addz_in(X, Y, Z))
ADDZ_IN(zero(X), zero(Y), zero(Z)) → ADDZ_IN(X, Y, Z)
ADDX_IN1(zero(X), b, zero(X)) → U51(X, binaryZ_in(X))
ADDX_IN1(zero(X), b, zero(X)) → BINARYZ_IN(X)
ADDX_IN1(one(X), b, one(X)) → U41(X, binary_in(X))
ADDX_IN1(one(X), b, one(X)) → BINARY_IN(X)
ADDY_IN1(b, zero(Y), zero(Y)) → U81(Y, binaryZ_in(Y))
ADDY_IN1(b, zero(Y), zero(Y)) → BINARYZ_IN(Y)
ADDY_IN1(b, one(Y), one(Y)) → U71(Y, binary_in(Y))
ADDY_IN1(b, one(Y), one(Y)) → BINARY_IN(Y)
ADDX_IN(one(X), b, zero(Z)) → U181(X, Z, succ_in(X, Z))
ADDX_IN(one(X), b, zero(Z)) → SUCC_IN(X, Z)
ADDX_IN(zero(X), b, one(X)) → U171(X, binaryZ_in(X))
ADDX_IN(zero(X), b, one(X)) → BINARYZ_IN(X)
ADDY_IN(b, one(Y), zero(Z)) → U211(Y, Z, succ_in(Y, Z))
ADDY_IN(b, one(Y), zero(Z)) → SUCC_IN(Y, Z)
ADDY_IN(b, zero(Y), one(Y)) → U201(Y, binaryZ_in(Y))
ADDY_IN(b, zero(Y), one(Y)) → BINARYZ_IN(Y)
ADD_IN(b, Y, Y) → U21(Y, binaryZ_in(Y))
ADD_IN(b, Y, Y) → BINARYZ_IN(Y)
ADD_IN(X, b, X) → U11(X, binaryZ_in(X))
ADD_IN(X, b, X) → BINARYZ_IN(X)
add_in(X, Y, Z) → U3(X, Y, Z, addz_in(X, Y, Z))
addz_in(one(X), one(Y), zero(Z)) → U13(X, Y, Z, addc_in(X, Y, Z))
addc_in(X, Y, Z) → U16(X, Y, Z, addC_in(X, Y, Z))
addC_in(one(X), one(Y), one(Z)) → U26(X, Y, Z, addc_in(X, Y, Z))
addc_in(b, Y, Z) → U15(Y, Z, succZ_in(Y, Z))
succZ_in(one(X), zero(Z)) → U34(X, Z, succ_in(X, Z))
succ_in(one(X), zero(Z)) → U32(X, Z, succ_in(X, Z))
succ_in(zero(X), one(X)) → U31(X, binaryZ_in(X))
binaryZ_in(one(X)) → U30(X, binary_in(X))
binary_in(one(X)) → U28(X, binary_in(X))
binary_in(zero(X)) → U27(X, binaryZ_in(X))
binaryZ_in(zero(X)) → U29(X, binaryZ_in(X))
U29(X, binaryZ_out(X)) → binaryZ_out(zero(X))
U27(X, binaryZ_out(X)) → binary_out(zero(X))
binary_in(b) → binary_out(b)
U28(X, binary_out(X)) → binary_out(one(X))
U30(X, binary_out(X)) → binaryZ_out(one(X))
U31(X, binaryZ_out(X)) → succ_out(zero(X), one(X))
succ_in(b, one(b)) → succ_out(b, one(b))
U32(X, Z, succ_out(X, Z)) → succ_out(one(X), zero(Z))
U34(X, Z, succ_out(X, Z)) → succZ_out(one(X), zero(Z))
succZ_in(zero(X), one(X)) → U33(X, binaryZ_in(X))
U33(X, binaryZ_out(X)) → succZ_out(zero(X), one(X))
U15(Y, Z, succZ_out(Y, Z)) → addc_out(b, Y, Z)
addc_in(X, b, Z) → U14(X, Z, succZ_in(X, Z))
U14(X, Z, succZ_out(X, Z)) → addc_out(X, b, Z)
addc_in(b, b, one(b)) → addc_out(b, b, one(b))
U26(X, Y, Z, addc_out(X, Y, Z)) → addC_out(one(X), one(Y), one(Z))
addC_in(one(X), zero(Y), zero(Z)) → U25(X, Y, Z, addY_in(X, Y, Z))
addY_in(X, Y, Z) → U22(X, Y, Z, addC_in(X, Y, Z))
addC_in(zero(X), one(Y), zero(Z)) → U24(X, Y, Z, addX_in(X, Y, Z))
addX_in(X, Y, Z) → U19(X, Y, Z, addC_in(X, Y, Z))
addC_in(zero(X), zero(Y), one(Z)) → U23(X, Y, Z, addz_in(X, Y, Z))
addz_in(one(X), zero(Y), one(Z)) → U12(X, Y, Z, addy_in(X, Y, Z))
addy_in(X, Y, Z) → U9(X, Y, Z, addz_in(X, Y, Z))
addz_in(zero(X), one(Y), one(Z)) → U11(X, Y, Z, addx_in(X, Y, Z))
addx_in(X, Y, Z) → U6(X, Y, Z, addz_in(X, Y, Z))
addz_in(zero(X), zero(Y), zero(Z)) → U10(X, Y, Z, addz_in(X, Y, Z))
U10(X, Y, Z, addz_out(X, Y, Z)) → addz_out(zero(X), zero(Y), zero(Z))
U6(X, Y, Z, addz_out(X, Y, Z)) → addx_out(X, Y, Z)
addx_in(zero(X), b, zero(X)) → U5(X, binaryZ_in(X))
U5(X, binaryZ_out(X)) → addx_out(zero(X), b, zero(X))
addx_in(one(X), b, one(X)) → U4(X, binary_in(X))
U4(X, binary_out(X)) → addx_out(one(X), b, one(X))
U11(X, Y, Z, addx_out(X, Y, Z)) → addz_out(zero(X), one(Y), one(Z))
U9(X, Y, Z, addz_out(X, Y, Z)) → addy_out(X, Y, Z)
addy_in(b, zero(Y), zero(Y)) → U8(Y, binaryZ_in(Y))
U8(Y, binaryZ_out(Y)) → addy_out(b, zero(Y), zero(Y))
addy_in(b, one(Y), one(Y)) → U7(Y, binary_in(Y))
U7(Y, binary_out(Y)) → addy_out(b, one(Y), one(Y))
U12(X, Y, Z, addy_out(X, Y, Z)) → addz_out(one(X), zero(Y), one(Z))
U23(X, Y, Z, addz_out(X, Y, Z)) → addC_out(zero(X), zero(Y), one(Z))
U19(X, Y, Z, addC_out(X, Y, Z)) → addX_out(X, Y, Z)
addX_in(one(X), b, zero(Z)) → U18(X, Z, succ_in(X, Z))
U18(X, Z, succ_out(X, Z)) → addX_out(one(X), b, zero(Z))
addX_in(zero(X), b, one(X)) → U17(X, binaryZ_in(X))
U17(X, binaryZ_out(X)) → addX_out(zero(X), b, one(X))
U24(X, Y, Z, addX_out(X, Y, Z)) → addC_out(zero(X), one(Y), zero(Z))
U22(X, Y, Z, addC_out(X, Y, Z)) → addY_out(X, Y, Z)
addY_in(b, one(Y), zero(Z)) → U21(Y, Z, succ_in(Y, Z))
U21(Y, Z, succ_out(Y, Z)) → addY_out(b, one(Y), zero(Z))
addY_in(b, zero(Y), one(Y)) → U20(Y, binaryZ_in(Y))
U20(Y, binaryZ_out(Y)) → addY_out(b, zero(Y), one(Y))
U25(X, Y, Z, addY_out(X, Y, Z)) → addC_out(one(X), zero(Y), zero(Z))
U16(X, Y, Z, addC_out(X, Y, Z)) → addc_out(X, Y, Z)
U13(X, Y, Z, addc_out(X, Y, Z)) → addz_out(one(X), one(Y), zero(Z))
U3(X, Y, Z, addz_out(X, Y, Z)) → add_out(X, Y, Z)
add_in(b, Y, Y) → U2(Y, binaryZ_in(Y))
U2(Y, binaryZ_out(Y)) → add_out(b, Y, Y)
add_in(X, b, X) → U1(X, binaryZ_in(X))
U1(X, binaryZ_out(X)) → add_out(X, b, X)
add_in(b, b, b) → add_out(b, b, b)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
BINARYZ_IN(one(X)) → BINARY_IN(X)
BINARYZ_IN(zero(X)) → BINARYZ_IN(X)
BINARY_IN(one(X)) → BINARY_IN(X)
BINARY_IN(zero(X)) → BINARYZ_IN(X)
add_in(X, Y, Z) → U3(X, Y, Z, addz_in(X, Y, Z))
addz_in(one(X), one(Y), zero(Z)) → U13(X, Y, Z, addc_in(X, Y, Z))
addc_in(X, Y, Z) → U16(X, Y, Z, addC_in(X, Y, Z))
addC_in(one(X), one(Y), one(Z)) → U26(X, Y, Z, addc_in(X, Y, Z))
addc_in(b, Y, Z) → U15(Y, Z, succZ_in(Y, Z))
succZ_in(one(X), zero(Z)) → U34(X, Z, succ_in(X, Z))
succ_in(one(X), zero(Z)) → U32(X, Z, succ_in(X, Z))
succ_in(zero(X), one(X)) → U31(X, binaryZ_in(X))
binaryZ_in(one(X)) → U30(X, binary_in(X))
binary_in(one(X)) → U28(X, binary_in(X))
binary_in(zero(X)) → U27(X, binaryZ_in(X))
binaryZ_in(zero(X)) → U29(X, binaryZ_in(X))
U29(X, binaryZ_out(X)) → binaryZ_out(zero(X))
U27(X, binaryZ_out(X)) → binary_out(zero(X))
binary_in(b) → binary_out(b)
U28(X, binary_out(X)) → binary_out(one(X))
U30(X, binary_out(X)) → binaryZ_out(one(X))
U31(X, binaryZ_out(X)) → succ_out(zero(X), one(X))
succ_in(b, one(b)) → succ_out(b, one(b))
U32(X, Z, succ_out(X, Z)) → succ_out(one(X), zero(Z))
U34(X, Z, succ_out(X, Z)) → succZ_out(one(X), zero(Z))
succZ_in(zero(X), one(X)) → U33(X, binaryZ_in(X))
U33(X, binaryZ_out(X)) → succZ_out(zero(X), one(X))
U15(Y, Z, succZ_out(Y, Z)) → addc_out(b, Y, Z)
addc_in(X, b, Z) → U14(X, Z, succZ_in(X, Z))
U14(X, Z, succZ_out(X, Z)) → addc_out(X, b, Z)
addc_in(b, b, one(b)) → addc_out(b, b, one(b))
U26(X, Y, Z, addc_out(X, Y, Z)) → addC_out(one(X), one(Y), one(Z))
addC_in(one(X), zero(Y), zero(Z)) → U25(X, Y, Z, addY_in(X, Y, Z))
addY_in(X, Y, Z) → U22(X, Y, Z, addC_in(X, Y, Z))
addC_in(zero(X), one(Y), zero(Z)) → U24(X, Y, Z, addX_in(X, Y, Z))
addX_in(X, Y, Z) → U19(X, Y, Z, addC_in(X, Y, Z))
addC_in(zero(X), zero(Y), one(Z)) → U23(X, Y, Z, addz_in(X, Y, Z))
addz_in(one(X), zero(Y), one(Z)) → U12(X, Y, Z, addy_in(X, Y, Z))
addy_in(X, Y, Z) → U9(X, Y, Z, addz_in(X, Y, Z))
addz_in(zero(X), one(Y), one(Z)) → U11(X, Y, Z, addx_in(X, Y, Z))
addx_in(X, Y, Z) → U6(X, Y, Z, addz_in(X, Y, Z))
addz_in(zero(X), zero(Y), zero(Z)) → U10(X, Y, Z, addz_in(X, Y, Z))
U10(X, Y, Z, addz_out(X, Y, Z)) → addz_out(zero(X), zero(Y), zero(Z))
U6(X, Y, Z, addz_out(X, Y, Z)) → addx_out(X, Y, Z)
addx_in(zero(X), b, zero(X)) → U5(X, binaryZ_in(X))
U5(X, binaryZ_out(X)) → addx_out(zero(X), b, zero(X))
addx_in(one(X), b, one(X)) → U4(X, binary_in(X))
U4(X, binary_out(X)) → addx_out(one(X), b, one(X))
U11(X, Y, Z, addx_out(X, Y, Z)) → addz_out(zero(X), one(Y), one(Z))
U9(X, Y, Z, addz_out(X, Y, Z)) → addy_out(X, Y, Z)
addy_in(b, zero(Y), zero(Y)) → U8(Y, binaryZ_in(Y))
U8(Y, binaryZ_out(Y)) → addy_out(b, zero(Y), zero(Y))
addy_in(b, one(Y), one(Y)) → U7(Y, binary_in(Y))
U7(Y, binary_out(Y)) → addy_out(b, one(Y), one(Y))
U12(X, Y, Z, addy_out(X, Y, Z)) → addz_out(one(X), zero(Y), one(Z))
U23(X, Y, Z, addz_out(X, Y, Z)) → addC_out(zero(X), zero(Y), one(Z))
U19(X, Y, Z, addC_out(X, Y, Z)) → addX_out(X, Y, Z)
addX_in(one(X), b, zero(Z)) → U18(X, Z, succ_in(X, Z))
U18(X, Z, succ_out(X, Z)) → addX_out(one(X), b, zero(Z))
addX_in(zero(X), b, one(X)) → U17(X, binaryZ_in(X))
U17(X, binaryZ_out(X)) → addX_out(zero(X), b, one(X))
U24(X, Y, Z, addX_out(X, Y, Z)) → addC_out(zero(X), one(Y), zero(Z))
U22(X, Y, Z, addC_out(X, Y, Z)) → addY_out(X, Y, Z)
addY_in(b, one(Y), zero(Z)) → U21(Y, Z, succ_in(Y, Z))
U21(Y, Z, succ_out(Y, Z)) → addY_out(b, one(Y), zero(Z))
addY_in(b, zero(Y), one(Y)) → U20(Y, binaryZ_in(Y))
U20(Y, binaryZ_out(Y)) → addY_out(b, zero(Y), one(Y))
U25(X, Y, Z, addY_out(X, Y, Z)) → addC_out(one(X), zero(Y), zero(Z))
U16(X, Y, Z, addC_out(X, Y, Z)) → addc_out(X, Y, Z)
U13(X, Y, Z, addc_out(X, Y, Z)) → addz_out(one(X), one(Y), zero(Z))
U3(X, Y, Z, addz_out(X, Y, Z)) → add_out(X, Y, Z)
add_in(b, Y, Y) → U2(Y, binaryZ_in(Y))
U2(Y, binaryZ_out(Y)) → add_out(b, Y, Y)
add_in(X, b, X) → U1(X, binaryZ_in(X))
U1(X, binaryZ_out(X)) → add_out(X, b, X)
add_in(b, b, b) → add_out(b, b, b)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
BINARYZ_IN(one(X)) → BINARY_IN(X)
BINARYZ_IN(zero(X)) → BINARYZ_IN(X)
BINARY_IN(one(X)) → BINARY_IN(X)
BINARY_IN(zero(X)) → BINARYZ_IN(X)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
BINARYZ_IN(one(X)) → BINARY_IN(X)
BINARYZ_IN(zero(X)) → BINARYZ_IN(X)
BINARY_IN(one(X)) → BINARY_IN(X)
BINARY_IN(zero(X)) → BINARYZ_IN(X)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
SUCC_IN(one(X), zero(Z)) → SUCC_IN(X, Z)
add_in(X, Y, Z) → U3(X, Y, Z, addz_in(X, Y, Z))
addz_in(one(X), one(Y), zero(Z)) → U13(X, Y, Z, addc_in(X, Y, Z))
addc_in(X, Y, Z) → U16(X, Y, Z, addC_in(X, Y, Z))
addC_in(one(X), one(Y), one(Z)) → U26(X, Y, Z, addc_in(X, Y, Z))
addc_in(b, Y, Z) → U15(Y, Z, succZ_in(Y, Z))
succZ_in(one(X), zero(Z)) → U34(X, Z, succ_in(X, Z))
succ_in(one(X), zero(Z)) → U32(X, Z, succ_in(X, Z))
succ_in(zero(X), one(X)) → U31(X, binaryZ_in(X))
binaryZ_in(one(X)) → U30(X, binary_in(X))
binary_in(one(X)) → U28(X, binary_in(X))
binary_in(zero(X)) → U27(X, binaryZ_in(X))
binaryZ_in(zero(X)) → U29(X, binaryZ_in(X))
U29(X, binaryZ_out(X)) → binaryZ_out(zero(X))
U27(X, binaryZ_out(X)) → binary_out(zero(X))
binary_in(b) → binary_out(b)
U28(X, binary_out(X)) → binary_out(one(X))
U30(X, binary_out(X)) → binaryZ_out(one(X))
U31(X, binaryZ_out(X)) → succ_out(zero(X), one(X))
succ_in(b, one(b)) → succ_out(b, one(b))
U32(X, Z, succ_out(X, Z)) → succ_out(one(X), zero(Z))
U34(X, Z, succ_out(X, Z)) → succZ_out(one(X), zero(Z))
succZ_in(zero(X), one(X)) → U33(X, binaryZ_in(X))
U33(X, binaryZ_out(X)) → succZ_out(zero(X), one(X))
U15(Y, Z, succZ_out(Y, Z)) → addc_out(b, Y, Z)
addc_in(X, b, Z) → U14(X, Z, succZ_in(X, Z))
U14(X, Z, succZ_out(X, Z)) → addc_out(X, b, Z)
addc_in(b, b, one(b)) → addc_out(b, b, one(b))
U26(X, Y, Z, addc_out(X, Y, Z)) → addC_out(one(X), one(Y), one(Z))
addC_in(one(X), zero(Y), zero(Z)) → U25(X, Y, Z, addY_in(X, Y, Z))
addY_in(X, Y, Z) → U22(X, Y, Z, addC_in(X, Y, Z))
addC_in(zero(X), one(Y), zero(Z)) → U24(X, Y, Z, addX_in(X, Y, Z))
addX_in(X, Y, Z) → U19(X, Y, Z, addC_in(X, Y, Z))
addC_in(zero(X), zero(Y), one(Z)) → U23(X, Y, Z, addz_in(X, Y, Z))
addz_in(one(X), zero(Y), one(Z)) → U12(X, Y, Z, addy_in(X, Y, Z))
addy_in(X, Y, Z) → U9(X, Y, Z, addz_in(X, Y, Z))
addz_in(zero(X), one(Y), one(Z)) → U11(X, Y, Z, addx_in(X, Y, Z))
addx_in(X, Y, Z) → U6(X, Y, Z, addz_in(X, Y, Z))
addz_in(zero(X), zero(Y), zero(Z)) → U10(X, Y, Z, addz_in(X, Y, Z))
U10(X, Y, Z, addz_out(X, Y, Z)) → addz_out(zero(X), zero(Y), zero(Z))
U6(X, Y, Z, addz_out(X, Y, Z)) → addx_out(X, Y, Z)
addx_in(zero(X), b, zero(X)) → U5(X, binaryZ_in(X))
U5(X, binaryZ_out(X)) → addx_out(zero(X), b, zero(X))
addx_in(one(X), b, one(X)) → U4(X, binary_in(X))
U4(X, binary_out(X)) → addx_out(one(X), b, one(X))
U11(X, Y, Z, addx_out(X, Y, Z)) → addz_out(zero(X), one(Y), one(Z))
U9(X, Y, Z, addz_out(X, Y, Z)) → addy_out(X, Y, Z)
addy_in(b, zero(Y), zero(Y)) → U8(Y, binaryZ_in(Y))
U8(Y, binaryZ_out(Y)) → addy_out(b, zero(Y), zero(Y))
addy_in(b, one(Y), one(Y)) → U7(Y, binary_in(Y))
U7(Y, binary_out(Y)) → addy_out(b, one(Y), one(Y))
U12(X, Y, Z, addy_out(X, Y, Z)) → addz_out(one(X), zero(Y), one(Z))
U23(X, Y, Z, addz_out(X, Y, Z)) → addC_out(zero(X), zero(Y), one(Z))
U19(X, Y, Z, addC_out(X, Y, Z)) → addX_out(X, Y, Z)
addX_in(one(X), b, zero(Z)) → U18(X, Z, succ_in(X, Z))
U18(X, Z, succ_out(X, Z)) → addX_out(one(X), b, zero(Z))
addX_in(zero(X), b, one(X)) → U17(X, binaryZ_in(X))
U17(X, binaryZ_out(X)) → addX_out(zero(X), b, one(X))
U24(X, Y, Z, addX_out(X, Y, Z)) → addC_out(zero(X), one(Y), zero(Z))
U22(X, Y, Z, addC_out(X, Y, Z)) → addY_out(X, Y, Z)
addY_in(b, one(Y), zero(Z)) → U21(Y, Z, succ_in(Y, Z))
U21(Y, Z, succ_out(Y, Z)) → addY_out(b, one(Y), zero(Z))
addY_in(b, zero(Y), one(Y)) → U20(Y, binaryZ_in(Y))
U20(Y, binaryZ_out(Y)) → addY_out(b, zero(Y), one(Y))
U25(X, Y, Z, addY_out(X, Y, Z)) → addC_out(one(X), zero(Y), zero(Z))
U16(X, Y, Z, addC_out(X, Y, Z)) → addc_out(X, Y, Z)
U13(X, Y, Z, addc_out(X, Y, Z)) → addz_out(one(X), one(Y), zero(Z))
U3(X, Y, Z, addz_out(X, Y, Z)) → add_out(X, Y, Z)
add_in(b, Y, Y) → U2(Y, binaryZ_in(Y))
U2(Y, binaryZ_out(Y)) → add_out(b, Y, Y)
add_in(X, b, X) → U1(X, binaryZ_in(X))
U1(X, binaryZ_out(X)) → add_out(X, b, X)
add_in(b, b, b) → add_out(b, b, b)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
SUCC_IN(one(X), zero(Z)) → SUCC_IN(X, Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
SUCC_IN(zero(Z)) → SUCC_IN(Z)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
ADDC_IN(X, Y, Z) → ADDC_IN1(X, Y, Z)
ADDX_IN1(X, Y, Z) → ADDZ_IN(X, Y, Z)
ADDC_IN1(one(X), zero(Y), zero(Z)) → ADDY_IN(X, Y, Z)
ADDC_IN1(one(X), one(Y), one(Z)) → ADDC_IN(X, Y, Z)
ADDZ_IN(zero(X), zero(Y), zero(Z)) → ADDZ_IN(X, Y, Z)
ADDC_IN1(zero(X), zero(Y), one(Z)) → ADDZ_IN(X, Y, Z)
ADDY_IN(X, Y, Z) → ADDC_IN1(X, Y, Z)
ADDY_IN1(X, Y, Z) → ADDZ_IN(X, Y, Z)
ADDX_IN(X, Y, Z) → ADDC_IN1(X, Y, Z)
ADDZ_IN(one(X), zero(Y), one(Z)) → ADDY_IN1(X, Y, Z)
ADDZ_IN(one(X), one(Y), zero(Z)) → ADDC_IN(X, Y, Z)
ADDC_IN1(zero(X), one(Y), zero(Z)) → ADDX_IN(X, Y, Z)
ADDZ_IN(zero(X), one(Y), one(Z)) → ADDX_IN1(X, Y, Z)
add_in(X, Y, Z) → U3(X, Y, Z, addz_in(X, Y, Z))
addz_in(one(X), one(Y), zero(Z)) → U13(X, Y, Z, addc_in(X, Y, Z))
addc_in(X, Y, Z) → U16(X, Y, Z, addC_in(X, Y, Z))
addC_in(one(X), one(Y), one(Z)) → U26(X, Y, Z, addc_in(X, Y, Z))
addc_in(b, Y, Z) → U15(Y, Z, succZ_in(Y, Z))
succZ_in(one(X), zero(Z)) → U34(X, Z, succ_in(X, Z))
succ_in(one(X), zero(Z)) → U32(X, Z, succ_in(X, Z))
succ_in(zero(X), one(X)) → U31(X, binaryZ_in(X))
binaryZ_in(one(X)) → U30(X, binary_in(X))
binary_in(one(X)) → U28(X, binary_in(X))
binary_in(zero(X)) → U27(X, binaryZ_in(X))
binaryZ_in(zero(X)) → U29(X, binaryZ_in(X))
U29(X, binaryZ_out(X)) → binaryZ_out(zero(X))
U27(X, binaryZ_out(X)) → binary_out(zero(X))
binary_in(b) → binary_out(b)
U28(X, binary_out(X)) → binary_out(one(X))
U30(X, binary_out(X)) → binaryZ_out(one(X))
U31(X, binaryZ_out(X)) → succ_out(zero(X), one(X))
succ_in(b, one(b)) → succ_out(b, one(b))
U32(X, Z, succ_out(X, Z)) → succ_out(one(X), zero(Z))
U34(X, Z, succ_out(X, Z)) → succZ_out(one(X), zero(Z))
succZ_in(zero(X), one(X)) → U33(X, binaryZ_in(X))
U33(X, binaryZ_out(X)) → succZ_out(zero(X), one(X))
U15(Y, Z, succZ_out(Y, Z)) → addc_out(b, Y, Z)
addc_in(X, b, Z) → U14(X, Z, succZ_in(X, Z))
U14(X, Z, succZ_out(X, Z)) → addc_out(X, b, Z)
addc_in(b, b, one(b)) → addc_out(b, b, one(b))
U26(X, Y, Z, addc_out(X, Y, Z)) → addC_out(one(X), one(Y), one(Z))
addC_in(one(X), zero(Y), zero(Z)) → U25(X, Y, Z, addY_in(X, Y, Z))
addY_in(X, Y, Z) → U22(X, Y, Z, addC_in(X, Y, Z))
addC_in(zero(X), one(Y), zero(Z)) → U24(X, Y, Z, addX_in(X, Y, Z))
addX_in(X, Y, Z) → U19(X, Y, Z, addC_in(X, Y, Z))
addC_in(zero(X), zero(Y), one(Z)) → U23(X, Y, Z, addz_in(X, Y, Z))
addz_in(one(X), zero(Y), one(Z)) → U12(X, Y, Z, addy_in(X, Y, Z))
addy_in(X, Y, Z) → U9(X, Y, Z, addz_in(X, Y, Z))
addz_in(zero(X), one(Y), one(Z)) → U11(X, Y, Z, addx_in(X, Y, Z))
addx_in(X, Y, Z) → U6(X, Y, Z, addz_in(X, Y, Z))
addz_in(zero(X), zero(Y), zero(Z)) → U10(X, Y, Z, addz_in(X, Y, Z))
U10(X, Y, Z, addz_out(X, Y, Z)) → addz_out(zero(X), zero(Y), zero(Z))
U6(X, Y, Z, addz_out(X, Y, Z)) → addx_out(X, Y, Z)
addx_in(zero(X), b, zero(X)) → U5(X, binaryZ_in(X))
U5(X, binaryZ_out(X)) → addx_out(zero(X), b, zero(X))
addx_in(one(X), b, one(X)) → U4(X, binary_in(X))
U4(X, binary_out(X)) → addx_out(one(X), b, one(X))
U11(X, Y, Z, addx_out(X, Y, Z)) → addz_out(zero(X), one(Y), one(Z))
U9(X, Y, Z, addz_out(X, Y, Z)) → addy_out(X, Y, Z)
addy_in(b, zero(Y), zero(Y)) → U8(Y, binaryZ_in(Y))
U8(Y, binaryZ_out(Y)) → addy_out(b, zero(Y), zero(Y))
addy_in(b, one(Y), one(Y)) → U7(Y, binary_in(Y))
U7(Y, binary_out(Y)) → addy_out(b, one(Y), one(Y))
U12(X, Y, Z, addy_out(X, Y, Z)) → addz_out(one(X), zero(Y), one(Z))
U23(X, Y, Z, addz_out(X, Y, Z)) → addC_out(zero(X), zero(Y), one(Z))
U19(X, Y, Z, addC_out(X, Y, Z)) → addX_out(X, Y, Z)
addX_in(one(X), b, zero(Z)) → U18(X, Z, succ_in(X, Z))
U18(X, Z, succ_out(X, Z)) → addX_out(one(X), b, zero(Z))
addX_in(zero(X), b, one(X)) → U17(X, binaryZ_in(X))
U17(X, binaryZ_out(X)) → addX_out(zero(X), b, one(X))
U24(X, Y, Z, addX_out(X, Y, Z)) → addC_out(zero(X), one(Y), zero(Z))
U22(X, Y, Z, addC_out(X, Y, Z)) → addY_out(X, Y, Z)
addY_in(b, one(Y), zero(Z)) → U21(Y, Z, succ_in(Y, Z))
U21(Y, Z, succ_out(Y, Z)) → addY_out(b, one(Y), zero(Z))
addY_in(b, zero(Y), one(Y)) → U20(Y, binaryZ_in(Y))
U20(Y, binaryZ_out(Y)) → addY_out(b, zero(Y), one(Y))
U25(X, Y, Z, addY_out(X, Y, Z)) → addC_out(one(X), zero(Y), zero(Z))
U16(X, Y, Z, addC_out(X, Y, Z)) → addc_out(X, Y, Z)
U13(X, Y, Z, addc_out(X, Y, Z)) → addz_out(one(X), one(Y), zero(Z))
U3(X, Y, Z, addz_out(X, Y, Z)) → add_out(X, Y, Z)
add_in(b, Y, Y) → U2(Y, binaryZ_in(Y))
U2(Y, binaryZ_out(Y)) → add_out(b, Y, Y)
add_in(X, b, X) → U1(X, binaryZ_in(X))
U1(X, binaryZ_out(X)) → add_out(X, b, X)
add_in(b, b, b) → add_out(b, b, b)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
ADDC_IN(X, Y, Z) → ADDC_IN1(X, Y, Z)
ADDX_IN1(X, Y, Z) → ADDZ_IN(X, Y, Z)
ADDC_IN1(one(X), zero(Y), zero(Z)) → ADDY_IN(X, Y, Z)
ADDC_IN1(one(X), one(Y), one(Z)) → ADDC_IN(X, Y, Z)
ADDZ_IN(zero(X), zero(Y), zero(Z)) → ADDZ_IN(X, Y, Z)
ADDC_IN1(zero(X), zero(Y), one(Z)) → ADDZ_IN(X, Y, Z)
ADDY_IN(X, Y, Z) → ADDC_IN1(X, Y, Z)
ADDY_IN1(X, Y, Z) → ADDZ_IN(X, Y, Z)
ADDX_IN(X, Y, Z) → ADDC_IN1(X, Y, Z)
ADDZ_IN(one(X), zero(Y), one(Z)) → ADDY_IN1(X, Y, Z)
ADDZ_IN(one(X), one(Y), zero(Z)) → ADDC_IN(X, Y, Z)
ADDC_IN1(zero(X), one(Y), zero(Z)) → ADDX_IN(X, Y, Z)
ADDZ_IN(zero(X), one(Y), one(Z)) → ADDX_IN1(X, Y, Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
ADDX_IN1(Z) → ADDZ_IN(Z)
ADDC_IN(Z) → ADDC_IN1(Z)
ADDC_IN1(one(Z)) → ADDZ_IN(Z)
ADDZ_IN(one(Z)) → ADDX_IN1(Z)
ADDC_IN1(one(Z)) → ADDC_IN(Z)
ADDZ_IN(zero(Z)) → ADDC_IN(Z)
ADDC_IN1(zero(Z)) → ADDY_IN(Z)
ADDY_IN1(Z) → ADDZ_IN(Z)
ADDX_IN(Z) → ADDC_IN1(Z)
ADDY_IN(Z) → ADDC_IN1(Z)
ADDZ_IN(zero(Z)) → ADDZ_IN(Z)
ADDZ_IN(one(Z)) → ADDY_IN1(Z)
ADDC_IN1(zero(Z)) → ADDX_IN(Z)
From the DPs we obtained the following set of size-change graphs: